#include<stdio.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<unistd.h>
//#include<errno.h>
#include<string.h>
#include<stdlib.h>
int  main()
{
//  pid_t id = fork();
//  if(id == 0)
//  {
//    //child    
//    while(1)    
//    {      
//    printf("child:pid: %d,ppid: %d\n", getpid(),getppid());
//    sleep(2);
//    }
//  }
//
//  else{
//    //father
//    while(1)    
//    {      
//    printf("father:pid: %d,ppid: %d\n", getpid(),getppid());
//    sleep(1);
//    }
//
//  }
//
//
  //int a= 0;
  //int b= 0;
  //int c =0;
  //c = a+b;
  ////错误码
  //for(int i =0;i<100;i++)
  //{
  //  printf("%d: %s\n", i,strerror(i));
  //}
  //exit(1);
//  pid_t id = fork();
//  if(id == 0)
//  {
//    //child
//    int count = 0;
//    while(count<10)
//    {
//      count++;
//      printf("I am child, pid: %d,ppid: %d\n",getpid(),getppid());
//      sleep(1);
//    }
//  }
//  else{
//    //father   
//    
//      printf("I am father, pid: %d,ppid: %d\n",getpid(),getppid());
//      pid_t ret = wait(NULL);
//      if(ret>=0){
//        printf("wait child success!!, %d\n",ret);
//      }
//
//  }
  
  pid_t id = fork();
  if(id == 0)
  {
    //child
    int count = 0;
    while(count<10)
    {
      count++;
      if(count==5)
      {
        int  a=1/0;
      }
      printf("I am child, pid: %d,ppid: %d\n",getpid(),getppid());
      sleep(1);
    }
    exit(0);
  }
  else{
    //father   
    
      printf("I am father, pid: %d,ppid: %d\n",getpid(),getppid());
      int status = 0;
      pid_t ret = waitpid(id, &status, 0);
      if(ret>=0){
        printf("wait child success!!, %d\n",ret);
        printf("status: %d\n", status);
        printf("child exit code: %d\n",( status>>8)&0xff);
        printf("child get signal: %d\n", status&0x7f);
      }

}

  return 0;
  }

